home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / Blitz2 / BlitzFaq / FaqLists / Horizscroll.txt < prev    next >
Encoding:
Text File  |  1996-08-31  |  3.5 KB  |  124 lines

  1. BitMap0,704,224,5                 ; double wide
  2. BitMap1,704,224,5                 ; double buffered
  3. Slice 1,77,320,224,$fff8,5,0,32,704,704    ;for ECS machines
  4.  
  5. ;First the calling code in the main loop:
  6. .main
  7. .....
  8.        If ex>bitmapx+272   ;scroll right
  9.             direction=1
  10.             If old_direction=-1
  11.                 Gosub Update_Maps
  12.                 firstx2=firstx
  13.                 secondx2=secondx
  14.                 delay_block2=delay_block
  15.                 delay_y2=delay_y
  16.             EndIf
  17.             old_direction=1
  18.             bitmapx+direction
  19.             extra=1
  20.             Gosub Update_Maps
  21.         EndIf
  22.  
  23.         If ex<bitmapx+48    ;scroll left
  24.             direction=-1
  25.             If old_direction=1
  26.                 Gosub Update_Maps
  27.                 firstx2=firstx
  28.                 secondx2=secondx
  29.                 delay_block2=delay_block
  30.                 delay_y2=delay_y
  31.             EndIf
  32.             old_direction=-1
  33.             bitmapx+direction
  34.             Gosub Update_Maps
  35.             If mx>2 Then extra=1
  36.         EndIf
  37. .......
  38.  
  39. End of main loop.   
  40.  
  41. ;Now the Hardware Scroll Gosub:
  42.  
  43. .Update_Maps
  44.  
  45.     blockx=divide16(bitmapx)
  46.     y=posx_in_block(bitmapx)
  47.  
  48.     If direction=1     ; Scroll right.
  49.  
  50.         If bitmapx<368
  51.  
  52.             If y < #blocks_high AND mx<#blocks_wide    ; for each
  53.                ;pixel moved (0 to 12), in block-  paste a block down 
  54.                ;a colomn
  55.                 mx=blockx+20+jump22(jump)
  56.                 delay_block=map(mx,y)
  57.                 delay_y=times16(y)
  58.  
  59.                 If mx< 42 +jump22(jump)  ; do a colomn 21 blocks 
  60.                                          ;ahead
  61.                     firstx=bitmapx+336
  62.                     Block delay_block,firstx,delay_y
  63.                 Else
  64.                     firstx=-1
  65.                 EndIf
  66.  
  67.                 If blockx>1     ; do block behind if not at block 0
  68.                     secondx=bitmapx-16
  69.                     Block delay_block,secondx,delay_y
  70.                 Else
  71.                     secondx=-1
  72.                 EndIf
  73.  
  74.             EndIf
  75.         Else
  76.             jump+1  ;jump back to begining of bitmap and block 0
  77.             bitmapx=16
  78.             ex-352
  79.             fix_scroll=-352
  80.             firstx=-1
  81.             secondx=-1
  82.         EndIf
  83.  
  84.     Else                  ; Scroll left
  85.         If bitmapx>16
  86.             mx=blockx-2+jump22(jump)
  87.             If y < #blocks_high AND mx>-1  ; for each pixel moved (0
  88.                                           ;to 12), in block- paste a
  89.                                           ;block up a colomn front
  90.                 delay_block=map(mx,y)
  91.                 delay_y=times16(y)
  92.  
  93.                 If blockx>1      ; do a colomn 2 blocks ahead
  94.                     firstx=bitmapx-16
  95.                     Block delay_block,firstx,delay_y
  96.                 Else
  97.                     firstx=-1
  98.                 EndIf
  99.  
  100.                 If blockx<22     ; do 12 blocks behind if not at          
  101.                                  ;block 22 or 0
  102.                     secondx=bitmapx+336
  103.                     Block delay_block,secondx,delay_y
  104.                 Else
  105.                     secondx=-1
  106.                 EndIf
  107.  
  108.             EndIf
  109.         Else
  110.             If jump=0
  111.                 If bitmapx=14
  112.                     bitmapx+1
  113.                 EndIf
  114.             Else
  115.                 jump-1  ;jump back to end of bitmap and block 22
  116.                 bitmapx=368
  117.                 ex+352
  118.                 fix_scroll=352
  119.                 firstx=-1
  120.                 secondx=-1
  121.             EndIf
  122.         EndIf
  123.     EndIf
  124. Return